package com.easysoft.commons.utils;

import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;

/**
 * 消息通知模板
 * 
 * @author try
 */
public class MessageUtils {

	/**
	 * 根据消息模板生成提醒消息
	 * 
	 * @param format
	 *            消息模板
	 * @param arg
	 *            参数
	 * @return 消息提醒
	 */
	public static String formatMessage(String message, Object... arg) {
		return MessageFormat.format(message, arg);
	}

	/**
	 * 创建短信JSON对象
	 * 
	 * @param ip
	 *            调用IP地址
	 * @param mobile
	 *            下发手机号码 （多个号码用逗号分隔，最多不能超过10个号码）
	 * @param content
	 *            下发信息内容（超过70字自动分成多条下发）
	 * @param smsType
	 *            短信类型：1文本短信；2语音短信
	 * @return JSON格式短信
	 */
	public static String createSMS(String ip, String mobile, String content, int smsType) {

		// 将短信内容放到短信待发送队列
		Map<String, Object> sms = new HashMap<String, Object>();
		sms.put("ip", ip); // 客户访问的IP
		sms.put("mobile", mobile); // 手机号
		sms.put("content", content); // 短信内容
		sms.put("smsType", smsType); // 短信类型：1文本短信；2语音短信
		sms.put("crtTime", System.currentTimeMillis());

		return JSONUtils.object2Json(sms);
	}

	/**
	 * 创建消息推送JSON对象
	 * 
	 * @param ip
	 *            调用IP地址
	 * @param title
	 *            标题
	 * @param content
	 *            内容
	 * @param audienceType
	 *            接收者类型:all 所有人; Tag 设备标签; Alias 设备别名; Registration 注册ID
	 * @param audience
	 *            接收者
	 * @param platform
	 *            目标平台：1ios;2android,3ios和android
	 * @param bigPushDuration
	 *            定速推送时长(分钟)：1~1440分钟；0表示不定速
	 * @param timeToLive
	 *            离线消息保留时长(秒)：1~864000秒；0表示不离线
	 * @return JSON格式消息推送
	 */
	public static String createPush(String ip, String title, String content, String audienceType, String audience,
			int platform, int bigPushDuration, int timeToLive) {

		Map<String, Object> push = new HashMap<String, Object>();
		push.put("ip", ip);
		push.put("title", title);
		push.put("audienceType", audienceType);
		push.put("audience", audience);
		push.put("content", content);
		push.put("platform", platform);
		push.put("bigPushDuration", bigPushDuration);
		push.put("timeToLive", timeToLive);
		push.put("crtTime", System.currentTimeMillis());

		return JSONUtils.object2Json(push);
	}

	/**
	 * 创建报告生成任务消息
	 * 
	 * @param orderId
	 *            订单主键
	 * @param orderNo
	 *            订单编码
	 * @param orderType
	 *            订单类型: normal：普通报告; pif：图片报告; resume：概要报告
	 * @param loginId
	 *            用户账号
	 * @param userType
	 *            用户类型 :1：普通用户; 4：经纪人 ; 5：车商; 6：接口
	 * @param vin
	 *            车辆识别码
	 * @param license
	 *            车牌号
	 * @param engine
	 *            发动机号
	 * @param vinType
	 *            vin类型 0：普通 ; 1：图片形式
	 * @param rework
	 *            订单状况 0：正常订单; 1：需要重做的订单
	 * @return JSON格式字符串
	 */
	public static String createMQ(String orderId, String orderNo, String orderType, String loginId, int userType,
			String vin, String license, String engine, int vinType, String rework) {

		Map<String, String> message = new HashMap<String, String>();
		message.put("orderId", orderId);
		message.put("orderNo", orderNo);
		message.put("orderType", orderType);
		message.put("loginId", loginId);
		message.put("userType", String.valueOf(userType));
		message.put("vin", vin);
		message.put("license", StringUtils.nullToBlank(license));
		message.put("engine", StringUtils.nullToBlank(engine));
		message.put("vintype", String.valueOf(vinType));
		message.put("rework", rework);
		message.put("reportType", ""); // 报告类型 0：车鉴定；1闪点报告
		message.put("brand", ""); // 品牌 多个以英文逗号间隔
		message.put("timestamp", String.valueOf(System.currentTimeMillis())); // 时间戳

		return JSONUtils.object2Json(message);
	}

	/**
	 * 创建报告生成任务消息
	 * 
	 * @param vin
	 *            车辆识别码
	 * @param license
	 *            车牌号
	 * @param engine
	 *            发动机号
	 * @return JSON格式字符串
	 */
	public static String createMQ(String vin, String license, String engine) {

		Map<String, String> message = new HashMap<String, String>();
		message.put("vin", vin);
		message.put("license", StringUtils.nullToBlank(license));
		message.put("engine", StringUtils.nullToBlank(engine));

		return JSONUtils.object2Json(message);
	}

}
